package coc.core.url;

import java.io.Serializable;

import coo.base.util.StringUtils;

/**
 * 网页链接。
 */
public class Url implements Serializable {
	/** 链接地址 */
	private String url;
	/** 链接文本 */
	private String text;
	/** 链接深度 */
	private Integer depth = 1;

	/**
	 * 构造方法。
	 * 
	 * @param url
	 *            链接地址
	 */
	public Url(String url) {
		this(url, "");
	}

	/**
	 * 构造方法。
	 * 
	 * @param url
	 *            链接地址
	 * @param text
	 *            链接文本
	 */
	public Url(String url, String text) {
		if (url == null) {
			url = "";
		}
		this.url = url;
		this.text = text;
	}

	/**
	 * 构造方法。
	 * 
	 * @param parent
	 *            父链接
	 * @param url
	 *            链接地址
	 */
	public Url(Url parent, String url) {
		this(parent, url, "");
	}

	/**
	 * 构造方法。
	 * 
	 * @param parent
	 *            父链接
	 * @param url
	 *            链接地址
	 * @param text
	 *            链接文本
	 */
	public Url(Url parent, String url, String text) {
		this.url = url;
		this.text = text;
		this.depth = parent.getDepth() + 1;
	}

	/**
	 * 是否是空的URL。
	 * 
	 * @return 如果是空的URL返回true，否则返回false。
	 */
	public Boolean isNullUrl() {
		return StringUtils.isBlank(url);
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public Integer getDepth() {
		return depth;
	}

	public void setDepth(Integer depth) {
		this.depth = depth;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj != null && obj instanceof Url) {
			return obj.toString().equals(url);
		}
		return false;
	}

	@Override
	public int hashCode() {
		return url.hashCode();
	}

	@Override
	public String toString() {
		return url;
	}
}
